#include <bits/stdc++.h>
using namespace std;
const int N=1e5+50;
typedef long long ll;
ll a[N],b[N];
int n,k;
map<ll,ll> Max;
map<ll,int> vis;
const int INF=0x3f3f3f3f;
int main(void){
    scanf("%d%d",&n,&k);
    for(int i=0;i<n;i++){
        scanf("%lld",&a[i]);
    }
    for(int i=0;i<n;i++){
        scanf("%lld",&b[i]);
        if(Max.find(a[i])==Max.end() || Max[a[i]]<b[i]){
            Max[a[i]]=b[i];
            vis[a[i]]=i;
        }
    }
    vector<ll> res;
    for(int i=0;i<n;i++){
        if(b[i]!=Max[a[i]] || i!=vis[a[i]]){
            res.push_back(b[i]);
        }
    }
    ll ans=0;
    sort(res.begin(),res.end());
    int s=res.size();
    for(int i=0;i<s-(n-k);i++){
        ans+=res[i];
    }
    printf("%lld\n",ans);
    return 0;
}